#include "kc.h"
#include "defs.h"

#define VIDEO_ADDRESS	0x3D4
#define VIDEO_DATA	0x3D5
#define CURSOR_REG_H 	0x0E
#define CURSOR_REG_L	0x0F

/***************************************************************
*k_clear_screen
*
* Borra la pantalla en modo texto color.
****************************************************************/



void k_clear_screen() 
{
	char *vidmem = (char *) 0xb8000;
	unsigned int i=0;
	while(i < (SHOW_SCREEN_SIZE*2))
	{
		vidmem[i]=' ';
		i++;
		vidmem[i]=WHITE_TXT;
		i++;
	};
	
}

/***************************************************************
*setup_IDT_entry
* Inicializa un descriptor de la IDT
*
*Recibe: Puntero a elemento de la IDT
*	 Selector a cargar en el descriptor de interrupcion
*	 Puntero a rutina de atencion de interrupcion	
*	 Derechos de acceso del segmento
*	 Cero
****************************************************************/

void setup_IDT_entry (DESCR_INT *item, byte selector, dword offset, byte access,
			 byte cero) {
  item->selector = selector;
  item->offset_l = offset & 0xFFFF;
  item->offset_h = offset >> 16;
  item->access = access;
  item->cero = cero;
}

/***************************************
 * eliminateVideoCursor
 * 	Elimina de la pantalla el cursor de la placa de video.
 * ***********************/
void eliminateVideoCursor(void)
{
	/* 25*80+80 = 0x0820
	 * cursor High <- 0x07
	 * cursor Low <- 0xD0
	 * */
		portOut(VIDEO_ADDRESS, CURSOR_REG_H);
		portOut(VIDEO_DATA, 0x08);
		portOut(VIDEO_ADDRESS, CURSOR_REG_L);
		portOut(VIDEO_DATA, 0x20);
		return;
}

